#ifndef ECATBUSXML_H
#define ECATBUSXML_H


#include <QMap>
#include "domparser.h"


#ifndef D_ECATBUS_CONFIG_FILE
#define D_ECATBUS_CONFIG_FILE "/tcrwork/linuxController/trunk/TcrController/data/globalConfig/ethercat/busDevs.xml"
#endif

///**
// * @brief The E_EcatDevType enum 设备类型标识
// */
//enum E_EcatDevType{
//    E_EcatDev_TypeErr=-1,//错误,无效，无法识别,不可用状态
//    E_EcatDev_New,//新增,未分类
//    E_EcatDev_NotUsed,//
//    E_EcatDev_Used,//

//    E_EcatDev_Servo,//
//    E_EcatDev_Coupler,//耦合器
//    E_EcatDev_IoModule,//

//    //    E_LS_L7N=LSMOTOR_TYPE,// LS motor
//    //    E_SX_MBDHT2510BA1=SXMOTOR_TYPE,// SX motor
//    //    E_TDMOTOR_TMP_1=TDMOTOR_TYPE,// TD motor
//    //    E_EcatDev_Coupler=0x100,//耦合器
//    //    E_Beckhoff_EL2889, // io output
//    //    E_Beckhoff_EL1889,// io  input
//};

///**
// * @brief The EcatBusDevInfo struct 总线设备信息
// */
//struct EcatBusDevInfo{
//    QString devName;//设备名称
//    unsigned int node;//所在通信节点
//    unsigned int alias;//别名
//    unsigned int vendorId;//版本ID
//    unsigned int productCode;//产品码
//    unsigned int revisionNumber;//修订版本号
//    int state;//状态：是否使用 1=true
//    int devType;//设备类型(E_EcatDevType), 读取 对象字典配置文件的 GroupType 决定
//    QString mappingObjectFile;//对象字典配置文件
//};

/**
 * @brief The EcatBusXml class Ethercat总线设别管理
 */
class EcatBusXml : public DomParser
{

public:
    EcatBusXml(QString filePath);

    //添加一个机器人数据(重启生效), 仅写别名跟配置文件
   // void saveBusDev(QVector<S_EcatDevInfo> &newInfo);

    /**
     * @brief delBusDev     //删除一个机器人数据(重启生效)
     * @param delalias
     */
    void delBusDev(int delalias);
    /**
     * @brief readBusConfig  //读取总线配置
     * @return
     */
    bool readBusConfig();
    /**
     * @brief saveBusConfig //读取总线配置
     * @return
     */
    bool saveBusConfig();
    /**
     * @brief aliasMapFile //<别名,配置文件>
     */
    QMap<int,QString> aliasMapFile;
    /**
     * @brief aliasMapDeviceType //<别名,设备类型>
     */
    QMap<int,int> aliasMapDeviceType;
    /**
     * @brief aliasList //<别名>
     */
    QList<int> aliasList;


private:
    /**
     * @brief busFile ///文件名保存
     */
    QString busFile;
};

#endif // ECATBUSXML_H
